package com.gxa.weixing.pc.service;

import com.github.pagehelper.PageInfo;
import com.gxa.weixing.core.exception.BusinessException;
import com.gxa.weixing.core.pojo.Goods;
import com.gxa.weixing.core.pojo.GoodsListVO;
import com.gxa.weixing.core.service.BaseService;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @author lijianmin
 * @date 2022/01/06  16:48:37
 */
public interface GoodsService extends BaseService<Goods> {

    /**
     * 根据特定条件获取商品列表的方法
     *
     * @param map 条件
     *            name: 商品名称 模糊
     *            supplierName:供应商名称 模糊
     *            state:销售状态
     *            promotion:推广状态
     *            shopId: 门店编号  门店库存 - 商品选择需要此字段
     *            page: 页码
     *            size: 每页数据量
     * @return 返回信息
     */
    PageInfo<GoodsListVO> getGoodsList(Map<String, Object> map) throws Exception;

    /**
     * 根据特定条件获取门店库存列表的方法
     *
     * @param map 条件
     *            name: 商品名称 模糊
     *            state:销售状态
     *            shopGoodsState:销售状态
     *            shopName:门店名称
     *            page: 页码
     *            size: 每页数据量
     * @return 返回信息
     */
    PageInfo<Map<String, Object>> getShopGoodsList(Map<String, Object> map) throws BusinessException, ParseException;


    /**
     * 根据商品编号获取商品信息
     * @param shopId 商品编号 如果为0 则为查询为空的商品
     * @return
     */
    List<GoodsListVO> getGoodsListByShopId(Long shopId);
    /**
     * 修改商品方法
     *
     * @param map 修改信息
     * @return 返回是否成功
     */
    void update(Map<String, Object> map) throws BusinessException;

    /**
     * 删除商品方法
     *
     * @param id 删除商品的编号
     * @return 返回是否成功
     */
    void delete(Long id) throws BusinessException;

    /**
     * 添加商品方法
     *
     * @param map 添加信息
     * @return 返回是否成功
     */
    void add(Map<String, Object> map) throws BusinessException;


}
